//多个源对象中的属性复制到一个目标对象中，若对象之间有相同的属性，那么源对象的属性就会覆盖掉目标对象的属性，源对象和目标对象都是普通的对象，源对象里面取，往目标对象里面放

// Object.assign 方法
const source1 = {
    a:123,
    b:123
}

const source2 = {
    b:789,
    d:789
}
const target = {
    a:456,
    c:789
}

const result = Object.assign(target,source1,source2)// a属性被覆盖掉了，用后面对象的属性覆盖第一个对象

console.log(target)//{ a: 123, c: 789, b: 789, d: 789 }
console.log(result === target) //true 

function func(obj){
    obj.name = 'func obj'
    console.log(obj)
}

const obj = {name:'global obj'}

func(obj)//{ name: 'func obj' } 
console.log(obj)//{ name: 'func obj' }//方法外部的对象数据被修改
//==================================================
//若是希望函数内部修改对象，使用objectassign方法，把对象复制到全新的空对象上面

function func(obj){
    const funcObj = Object.assign({},obj)
    funcObj.name = 'func obj'//此时内部的对象是全新的对象，它的修改不会影响外部的对象
    console.log(funcObj)
}

const obj = {name:'global obj'}

func(obj)//{ name: 'func obj' }
console.log(obj)//{ name: 'global obj' }